package com.it.data_linkedList.leetcode;

/**
 * @author: Coke
 * @DateTime: 2023/06/08/21:30
 * 查找链表中间节点
 **/
public class E06LeetCode876 {
    
    /**
     * 查找链表的中间节点 （指针1 每次走一步  指针2 每次走两步）
     *
     * @param node:
     * @return ListNode
     * @DateTime: 2023/6/8 21:34
     * @author: Coke
     */
    public static ListNode middleNode (ListNode node) {
        if (node == null || node.next == null) {
            return node;
        }
        ListNode n1 = node;
        ListNode n2 = node;
        // 如果快指针的 下一个节点 和 下下个节点都不为空
        while (n2.next != null && n2.next.next != null) {
            n1 = n1.next;
            n2 = n2.next.next;
        }
        return n1;
    }
}
